#/usr/bin/env python
#coding:utf-8
# -*- coding: utf-8 -*-

import os
import logging
import logging.handlers
import time
from config.config import SysLogConfig


def getlogger(file):
    # 日志模块设置--文件日志
    # 第一步，创建一个logger
    logger = logging.getLogger(file)
    logger.setLevel(SysLogConfig.gloableloglevel)  # Log等级总开关
    # 第二步，创建一个handler，用于写入日志文件
    rq = time.strftime('%Y-%m-%d', time.localtime(time.time()))
    root_dir = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)),os.path.pardir))
    # print('*'*50)
    # print("root_dir="+root_dir)
    log_path = os.path.join(root_dir,'logs')
    # 如果不存在定义的日志目录就创建一个
    if not os.path.isdir(log_path):
        os.mkdir(log_path)
    # 获取脚本名称，并以脚本名称作为日志名
    logfile = os.path.join(log_path,os.path.basename(os.path.realpath(file)).split('.')[0] +'_'+ rq + '.log')
    # print('logfile='+logfile)
    #日志输出文件，最大单个文件20M,最多7个文件(一周)
    fh = logging.handlers.RotatingFileHandler(logfile, mode='a', encoding='utf-8',maxBytes=20*1024*1024, backupCount=7)
    # 文件日志级别
    fh.setLevel(SysLogConfig.fileloglevel)

    # 第三步，定义handler的输出格式
    formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
    fh.setFormatter(formatter)
    # 第四步，将logger添加到handler里面
    logger.addHandler(fh)

    # 日志模块--控制台日志
    ch = logging.StreamHandler()
    ch.setLevel(SysLogConfig.consoleloglevel)
    ch.setFormatter(formatter)
    logger.addHandler(ch)
    return logger